#pragma once
#include "config.hpp"
#include "land.hpp"
class Game;
class Actor
{
    friend class Displayer;
    friend class Game;
    friend std::string CommandFuncDump(std::string cmd, Game *g_ptr);

private:
    //人物基本属性
    char m_name{'\0'};        //人物名
    int m_fund{0};            //金币数
    int m_credit{0};          //点数
    int m_loc{0};             //位置
    int m_barrier{0};         //障碍数
    int m_robot{0};           //机器人数
    int m_god{0};             //财神剩余回合
    int m_inMagic{0};         //停止剩余轮数
    bool m_bankruptcy{false}; //是否破产
    Game *m_game;             //ref Game
    bool m_sell{false};       //本回合是否卖地过
    bool m_start{false};

public:
    Actor(void);
    virtual ~Actor(void);

    void InitActor(Game *g);

    bool isBankruptcy(void);              //是否破产
    bool QueryBuyEmpty(Land &land);       //询问是否买空地
    bool QueryUpdateBuliding(Land &land); //询问是否升级建筑
    int PayRent(Land &land);              //付过路费
    void GetMoney(int num);               //收钱
    void ToolHouse(void);                 //进入工具屋
    int MagicHouse();                     //进入魔法屋
    void GiftHouse(void);                 //进入礼物屋
    void Prison(void);                    //进入监狱
    void Mine(int loc);                   //到达矿地
    int UserAction(void);                 //卖房，道具，骰子
    void Enchanted(void);                 //被施魔法
};
